home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 8: LINUX Games
/
Linux Cubed Series 8 - LINUX Games.iso
/
games
/
muds
/
lpmud312.tar
/
lpmud312
/
util
/
fundesc.c
next >
Wrap
C/C++ Source or Header
|
1991-07-27
|
2KB
|
126 lines
#include <stdio.h>
#ifndef M_UNIX
#include <strings.h>
#endif
/*
Process stdin, dir to write doc files in argv[1]
argv[2] (optional) is the name of the processed file.
*/
char buf[2000];
char *start = "* Description:";
char *stend = "{";
char *dfile;
int line_count;
/* Search string in backwards
*/
char *backstrchr (apa, ch)
char *apa;
char ch;
{
char *sp;
sp = apa;
while (*sp) {
if (*sp==ch) return sp;
sp--;
}
return 0;
}
void
make_desc(fdesc)
char *fdesc;
{
char *tmp, *tmp2, *tmp3, *tmp4, fname[100];
int n,il;
FILE *f;
tmp = (char *) strchr(fdesc,'p');
while (tmp) {
if (strncmp(tmp,"public",6) == 0) break;
tmp = (char *) strchr(&tmp[1],'p');
}
if (!tmp) return;
*tmp = 0; tmp+=6;
tmp2 = (char*) strchr(tmp,'('); if (!tmp2) return;
tmp3 = (char*) backstrchr(tmp2,' ');
tmp4 = (char *) backstrchr(tmp2,'\n');
if (!tmp3) {
tmp3 = tmp4;
if (!tmp3) return;
}
else if ((tmp4) && (tmp3<tmp4))
tmp3 = tmp4;
*tmp2 = 0; strcpy(fname,&tmp3[1]); *tmp2='(';
if (f=fopen(fname,"a"))
if (dfile)
fprintf(f,"%s\n/*\n * Source: %s\n * Line: %d\n *\n * Description:%s\n\n",
tmp,dfile,line_count-1,fdesc);
else
fprintf(f,"%s\n/*\n * Line: %d\n *\n * Description:%s\n\n",
tmp,line_count-1,fdesc);
fclose(f);
}
int
main(argc, argv)
int argc;
char **argv;
{
int pflag, ch;
char *tmp, *bpek;
if (argc<2) {
perror("To few args");
exit(1);
}
if (chdir(argv[1])) {
perror("Can't change to doc dir\n");
exit(1);
}
if (argc > 2)
dfile = argv[2];
else
dfile = 0;
pflag = 0; tmp = start; bpek = buf; line_count = 1;
while ((ch=getchar()) != EOF) {
if (ch == '\n')
line_count ++;
if (pflag) {
if (ch == *tmp) {
tmp++; if (*tmp == 0) {
pflag = 0;
tmp = start;
*bpek = 0;
make_desc(buf);
bpek = buf;
}
}
else {
tmp = stend;
*bpek = ch; bpek++;
}
}
else if (ch == *tmp) {
tmp++; if (*tmp == 0) {
pflag = 1; tmp = stend;
}
}
else tmp = start;
}
}